iT邦幫忙

2024 iThome 鐵人賽

DAY 4
1
AI/ ML & Data

這跟文件說的不一樣!從 0 到 1 導入 dbt 的實戰甘苦談系列 第 4

DAY 4 「這跟文件說的不一樣!」的開始-dbt 導入的實作流程

  • 分享至 

  • xImage
  •  

前面說完了我們評估新工具的歷程,接下來就要開始實作啦!
其實如果對 dbt 不是很熟悉的人,或許前幾篇前情提要,更適合在整個系列的最後回頭來看。


要把所有的 sql code 搬移至另一個工具來部署,感覺有點像是搬家跟裝潢的概念。

首先我們按照 dbt 的指引,把開發環境設置完畢(官方文件),把新家硬裝的部分打理打理,才好入住。

這個環節大致會包含與 BigQuery 的互動,密鑰、正式與測試環境的設置,上一章提到的 staging, intermediate, mart 等等的資料集建立好。

接著再來布置軟裝。

按照官方文件針對各個層級的資料集應該要做什麼樣的處理,套用於我們平台的資料,讓所有開發人員都有共識,後續在 code review 時有一個參照的標準。

其中,我覺得最困難的一個環節是命名的規則(想不到吧!)

文件說的 plural,什麼時候要複數、要複數在哪裡、動詞要用哪個,使用者所在的地區是 user_locations 還是 users_locations?講師的英文要統一為哪個單字?為了這些討論了大半天都是常有的事。

雖然看起來雞毛蒜皮,但統一這件事情,絕對是重中之重,下一篇再花篇幅討論。

https://ithelp.ithome.com.tw/upload/images/20240918/20168954OgDrZ044Te.png

最後就是勞力活啦!把東西搬來新家。

首先先盤點過去的 SQL code 中哪些還有在使用,沒在用的就直接忽略,有在使用的就先照搬過來,將原先的 project_id.dataset_id.table_id改成 dbt 支持的語法 {{ ref(table_id) }},table_id 依照 dbt 的規則來做調整,純純的搬運工,可以邊搬邊看點影片的那種(🤫)

呃嗯,其實搬的時候需要思考蠻多事情的,像是 intermediate 重視重用性,一邊搬運時,一邊感受哪些資料處理一再被使用到,是否可以拉出一個 model 專門來做這個轉換?這樣所有的下游表都可以借來用用。

理論上 sql model 跟 yml file 應該是同步寫的,不過老實坦白,只有近期新開發的 pipeline 有做到這件事情(在 pipeline 建立完成時,必須同時將文件跟測試一起部署)。當時為了快速完成大量搬運,我們把 yml file 的文件工暫時放了放,具體來說,搬運去年就完成了,文件慢慢補上,直到最近才好不容易把 mart 的部分補齊了,方便跟其他業務單位溝通。

搬運陸續完成後,我們也才在開發環節上進行優化。

首先是聽到 dbt cloud 有可能按模型計價的風聲,我們就將 dbt core 建起來,並且搭配 vscode 中的 dev container,讓所有開發人員在將 repo clone 下來之後可以馬上執行與開發,不需要額外安裝跟設置一堆有的沒的(這個也是後續會再寫一篇~)

另外則是在 Github Action 上部署簡單的 CI/CD 流程,當開發人員寫完推 PR 上去會測試 pipeline 有沒有什麼問題,畢竟雖然本地端也可以直接叫 API 執行,但遇過太多說沒問題包君滿意隔天爆一堆 error 的冏境(包含我自己XD),還是加上一道保險才是。

這大概就是整個導入的過程啦!接下來的甘苦談且聽我娓娓道來吧~


上一篇
DAY 3 告別痛點-為何我們決定導入 dbt 優化資料轉換
下一篇
DAY 5 Structure 跟文件說的不一樣!談模型命名
系列文
這跟文件說的不一樣!從 0 到 1 導入 dbt 的實戰甘苦談13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言